package com.gobi.controller;

import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.config.SentinelConfig;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.transport.config.TransportConfig;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 *
 */
@RestController
public class DashBoardController {


    @GetMapping("/hello")
    public String hiResttemplate() {
        return "Hello Sentinel!";
    }

    /**
     * 该方法直接使用SphU#entry，但没有定义规则，可以在限流控制定义
     * @return
     */
    @GetMapping("/hello2")
    public String hello2() {
        //1.进行限流控制
        Entry entry = null;
        try {//限流入口
            entry = SphU.entry("hello_2");
            return "Hello Sentinel!";//被保护的资源
        } catch (BlockException e) {
            e.printStackTrace();
            return "系统繁忙，请稍候";//被限流或者降级的处理
        } finally {
            if (null != entry) {
                entry.close();
            }
        }
    }

    /**
     * 指定sentinel控制台地址
     */
    static {
        //或者使用-Dcsp.sentinel.dashboard.server=localhost:9000
        SentinelConfig.setConfig(TransportConfig.CONSOLE_SERVER,"localhost:9000");
       // AppNameUtil.APP_NAME = "";
    }
}
